package io.mft.api.domain;

public enum RegulationProcessClassify {
	
	
	OutputCacheWriteAccessProcessExecutor(Regulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),OutputCacheReadAccessProcessExecutor(Regulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),OutputParameterProcessExecutor(Regulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),InputParameterProcessExecutor(Regulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),LogicProcessExecutor(Regulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),DataAccessProcessExecutor(DataAccessRegulation.class,ApiFunctionType.processExecutor,ExecuteMode.sync),sync(Regulation.class,ApiFunctionType.combination,ExecuteMode.sync),async(Regulation.class,ApiFunctionType.combination,ExecuteMode.async),syncWaitAsync(Regulation.class,ApiFunctionType.combination,ExecuteMode.syncWaitAsync),flowPredictate(Regulation.class,ApiFunctionType.combination,ExecuteMode.sync);
	private ExecuteMode executeMode;
	private ApiFunctionType apiFunctionType;
	Class<?> regulationClass;
	private <T extends Regulation> RegulationProcessClassify(Class<T> regulationClass,ApiFunctionType apiFunctionType,ExecuteMode executeMode) {
		this.apiFunctionType=apiFunctionType;
		this.executeMode=executeMode;
		this.regulationClass=regulationClass;
	}
	public ExecuteMode executeMode() {
		return executeMode;
	}
	public ApiFunctionType apiFunctionType() {
		return apiFunctionType;
	}
	
	public Class<?> regulationClass() {
		return regulationClass;
	}
}
